static gboolean
check_iter (GtkTreeModelRefCount *ref_model,
GtkTreeIter *iter,
- gint expected_ref_count)
+ gint expected_ref_count,
+ gboolean may_assert)
{
NodeInfo *info;
if (expected_ref_count == 0)
return TRUE;
else
- return FALSE;
+ {
+ if (may_assert)
+ g_error ("Expected ref count %d, but node has never been referenced.\n", expected_ref_count);
+ return FALSE;
+ }
}
+ if (may_assert)
+ g_assert_cmpint (expected_ref_count, ==, info->ref_count);
+
return expected_ref_count == info->ref_count;
}
gtk_tree_model_ref_count_check_level (GtkTreeModelRefCount *ref_model,
GtkTreeIter *parent,
gint expected_ref_count,
- gboolean recurse)
+ gboolean recurse,
+ gboolean may_assert)
{
GtkTreeIter iter;
do
{
- if (!check_iter (ref_model, &iter, expected_ref_count))
+ if (!check_iter (ref_model, &iter, expected_ref_count, may_assert))
return FALSE;
if (recurse &&
{
if (!gtk_tree_model_ref_count_check_level (ref_model, &iter,
expected_ref_count,
- recurse))
+ recurse, may_assert))
return FALSE;
}
}
gboolean
gtk_tree_model_ref_count_check_node (GtkTreeModelRefCount *ref_model,
GtkTreeIter *iter,
- gint expected_ref_count)
+ gint expected_ref_count,
+ gboolean may_assert)
{
- return check_iter (ref_model, iter, expected_ref_count);
+ return check_iter (ref_model, iter, expected_ref_count, may_assert);
}
gboolean gtk_tree_model_ref_count_check_level (GtkTreeModelRefCount *ref_model,
GtkTreeIter *parent,
gint expected_ref_count,
- gboolean recurse);
+ gboolean recurse,
+ gboolean may_assert);
gboolean gtk_tree_model_ref_count_check_node (GtkTreeModelRefCount *ref_model,
GtkTreeIter *iter,
- gint expected_ref_count);
+ gint expected_ref_count,
+ gboolean may_assert);
/* A couple of helpers for the tests. Since this model will never be used
* outside of unit tests anyway, it is probably fine to have these here
static inline void
assert_entire_model_unreferenced (GtkTreeModelRefCount *ref_model)
{
- g_assert_cmpint (gtk_tree_model_ref_count_check_level (ref_model, NULL, 0,
- TRUE),
- ==, TRUE);
+ gtk_tree_model_ref_count_check_level (ref_model, NULL, 0, TRUE, TRUE);
}
static inline void
assert_root_level_unreferenced (GtkTreeModelRefCount *ref_model)
{
- g_assert_cmpint (gtk_tree_model_ref_count_check_level (ref_model, NULL, 0,
- FALSE),
- ==, TRUE);
+ gtk_tree_model_ref_count_check_level (ref_model, NULL, 0, FALSE, TRUE);
}
static inline void
assert_level_unreferenced (GtkTreeModelRefCount *ref_model,
GtkTreeIter *iter)
{
- g_assert_cmpint (gtk_tree_model_ref_count_check_level (ref_model, iter,
- 0, FALSE),
- ==, TRUE);
+ gtk_tree_model_ref_count_check_level (ref_model, iter, 0, FALSE, TRUE);
}
static inline void
assert_entire_model_referenced (GtkTreeModelRefCount *ref_model,
gint ref_count)
{
- g_assert_cmpint (gtk_tree_model_ref_count_check_level (ref_model, NULL,
- ref_count, TRUE),
- ==, TRUE);
+ gtk_tree_model_ref_count_check_level (ref_model, NULL, ref_count, TRUE, TRUE);
}
static inline void
gint ref_count)
{
g_assert_cmpint (gtk_tree_model_ref_count_check_level (ref_model, NULL,
- ref_count, TRUE),
+ ref_count,
+ TRUE, FALSE),
==, FALSE);
}
assert_root_level_referenced (GtkTreeModelRefCount *ref_model,
gint ref_count)
{
- g_assert_cmpint (gtk_tree_model_ref_count_check_level (ref_model, NULL,
- ref_count, FALSE),
- ==, TRUE);
+ gtk_tree_model_ref_count_check_level (ref_model, NULL, ref_count,
+ FALSE, TRUE);
}
static inline void
gint ref_count,
GtkTreeIter *iter)
{
- g_assert_cmpint (gtk_tree_model_ref_count_check_level (ref_model, iter,
- ref_count, FALSE),
- ==, TRUE);
+ gtk_tree_model_ref_count_check_level (ref_model, iter, ref_count,
+ FALSE, TRUE);
}
static inline void
GtkTreeIter *iter,
gint ref_count)
{
- g_assert_cmpint (gtk_tree_model_ref_count_check_node (ref_model, iter,
- ref_count),
- ==, TRUE);
+ gtk_tree_model_ref_count_check_node (ref_model, iter, ref_count, TRUE);
}